package persistencia;

import io.SubscriptionDTO;
import java.util.List;

/**
 * Interface que especifica los métodos que se deben implementar para trabajar
 * con objetos de la clase io.SubscriptionDTO.
 *
 * @author Nicolás Garay
 * @author Alejandro Jacquet
 * @author Rita Romani
 */
public interface SubscriptionDAO {

    /**
     * Método que devuelve una lista con objetos de io.SubscriptionDTO.
     *
     * @return List<SubscriptionDTO>
     * @throws DAOException excepción lanzada por la Base de Datos
     */
    public List<SubscriptionDTO> listarSubscription() throws DAOException;

    /**
     * Método que inserta una nueva suscripción en la Base de Datos.
     *
     * @param nombre String nombre de la suscripción (unívoco)
     * @param direccion String url de la suscripción
     * @param activo boolean determina si la suscripción se encuentra activa o
     * no
     * @throws DAOException excepción lanzada por la Base de Datos
     */
    public void insertarSubscription(String nombre, String direccion, boolean activo) throws DAOException;

    /**
     * Método que elimina una suscripción de la Base de Datos.
     *
     * @param nombre String nombre (unívoco) de la suscripción a eliminar
     * @return boolean determina si la suscripción fue eliminada correctamente o
     * no
     * @throws DAOException excepción lanzada por la Base de Datos
     */
    public boolean eliminarSubscription(String nombre) throws DAOException;

    /**
     * Método que modifica una suscripción en la Base de Datos.
     *
     * @param nombreActual String nombre actual de la suscripción
     * @param nombreNuevo String nombre nuevo de la suscripción
     * @param direccion String url de la suscripción
     * @param activo boolean determina si la suscripción se encuentra activa o
     * no
     * @throws DAOException excepción lanzada por la Base de Datos
     */
    public void actualizarSubscription(String nombreActual, String nombreNuevo, String direccion, boolean activo) throws DAOException;
}
